<?php

Yii::import('notas.models._base.BaseNota');

class Nota extends BaseNota {

    const ESTADO_ACTIVO = 'ACTIVO';
    const ESTADO_INACTIVO = 'INACTIVO';
    const TIPO_INCIDENCIA = 'incidencia';
    const TIPO_CUENTA = 'cuenta';
    const TIPO_CAMPANIA = 'campania';

    /**
     * @return Nota
     */
    public $nombreArchivo;

    public static function model($className = __CLASS__) {
        return parent::model($className);
    }

    public static function label($n = 1) {
        return Yii::t('app', 'Nota|Notas', $n);
    }

    public function relations() {
        return array_merge(parent::relations(), array(
            'cuenta' => array(self::BELONGS_TO, 'Cuenta', 'entidad_id'),
                )
        );
    }

    public function rules() {
        return array_merge(parent::rules(), array(
            array('nombreArchivo', 'safe', 'on' => 'search'),
        ));
    }

    public function scopes() {
        return array(
            'activos' => array(
                'condition' => 'estado = :estado',
                'params' => array(
                    ':estado' => self::ESTADO_ACTIVO,)
            ),
        );
    }

    public function searchArchivosByEntidad($id = null, $tipo = null) {
        $criteria = new CDbCriteria;

        $criteria->compare('t.id', $this->id);
        $criteria->compare('t.contenido', $this->contenido, true);
        $criteria->compare('t.usuario_creacion_id', $this->usuario_creacion_id);
        $criteria->compare('t.fecha_creacion', $this->fecha_creacion, true);
        $criteria->compare('t.estado', $this->estado, true);
        if (!$tipo == null)
            $criteria->compare('t.entidad_tipo', $tipo, true);
        else
            $criteria->compare('t.entidad_tipo', $this->entidad_tipo, true);
        $criteria->compare('t.entidad_id', $id);
        
        $criteria->order = 't.fecha_creacion DESC';

        return new CActiveDataProvider($this, array(
            'criteria' => $criteria,
            'pagination' => array(
                'pageSize' => 3
            )
                )
        );
    }

    /**
     * Concatena la descripción de cada uno de los archivos si la nota tiene archivos 
     * @autor Armando Maldonado <amaldonado@tradesystem.com.ec>
     * @return string
     */
    public function archivosToString() {
        $return = '';
        $return = $this->contenido . '&nbsp;&nbsp; <em class="muted">by ' . Yii::app()->user->um->loadUserById($this->usuario_creacion_id)->username . '</em><time style="float: right;">' . Util::FormatDate($this->fecha_creacion, 'd/m/Y h:m') . '</time><br>';
        foreach ($this->notaArchivos as $contact) {
            $return .='&nbsp;&nbsp;&nbsp;&nbsp;<i class=" icon-paper-clip"> </i>' . CHtml::link($contact->nombre, array('/notas/nota/download',
                        'carpeta' => $this->entidad_tipo,
                        'id' => $this->entidad_id,
                        'nombreArchivo' => $contact->ruta,
                            ), array(
                        'class' => 'btn btn-mini btn-link',
                            )
                    ) . '<br>';
        }
        return $return;
    }

    public function ActualizarEstadoEntidad($entidad_tipo, $entidad_id) {
        $return = Nota::model()->updateAll(array('estado' => Nota::ESTADO_INACTIVO,
            'usuario_actualizacion_id' => Yii::app()->user->id,
            'fecha_actualizacion' => Util::FechaActual()), '(entidad_tipo = :entidad_tipo and entidad_id = :entidad_id)and estado = :estado', array(':entidad_tipo' => $entidad_tipo,
            ':entidad_id' => $entidad_id,
            ':estado' => Nota::ESTADO_ACTIVO));
        return $return;
    }
}
